<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象</title>
</head>

<body>
    <script>
        /*
        1.什么是对象?
        多个数据的封装体
        用来保存多个数据的容器
        一个对象代表现实中的一个事物

        2.为什么要用对象?
        统一管理多个数据

        3.对象的组成?
        属性:属性名(字符串)和属性值(任意类型)组成
        方法:一种特殊的属性 (属性值是函数)

        4.如何访问对象内部数据? 
        对象名.属性名  编码简单但有时不能使用
        对象名['属性名']  编码麻烦,但通用

        */


        var p = {
            'name': 'Tom',
            age: 16,
            setName: function (name) {
                this.name = name;
            },
            setAge: function (age) {
                this.age = age;
            }
        }
        p.setName('Bob');
        p['setAge'](23);
        console.log(p.name, p['age']);

        /*
         问题:什么时候必须使用['属性名']的方式?
 
         1.属性名包含特殊字符:- 空格
         给p添加一个属性:content type:text/json
         p.content-type='text/json'  不能用
         p['content-type']='text/json'

 
 
         2.变量名不确定 
         var propName='myAge';
         var value=18;

         p.propName=value;//这种方法不行
         p[propName]=value//需要使用这种方法
         */

    </script>
</body>

</html>